home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
taropyon
/
cci
/
eupplay.cci
< prev
next >
Wrap
Text File
|
1993-11-30
|
4KB
|
175 lines
/*************************************************************************
* "eupplay.cci" : EUP データの演奏
*************************************************************************/
#include "ccilib.h"
/* パレットデータ(HEwin 配色) */
char PltDat[3][16] =
{
/* G R B */
{ 0, 0, 0}, /* C_BALCK, C_THROUGH */
{ 0, 0, 0}, /* C_BLUE , C_MBLACK */
{ 7, 7, 8}, /* C_RED */
{12,12,13}, /* C_MAGENTA */
{ 6, 5, 7}, /* C_GREEN */
{ 8, 7, 9}, /* C_CYAN */
{10, 9,11}, /* C_YELLOW */
{11,11,12}, /* C_WHITE */
{ 5, 5, 6}, /* C_HBALCK */
{ 0, 0,11}, /* C_HBLUE */
{ 0,11, 0}, /* C_HRED */
{ 0,11,11}, /* C_HMAGENTA */
{11, 0, 0}, /* C_HGEEN */
{11, 0,11}, /* C_HCYAN */
{11,11, 0}, /* C_HYELLOW */
{14,14,15} /* C_HWHITE */
};
char *SndPtr = NULL;
int set_title()
{
DSP_writePage(1); /* 書き込みページ */
DSP_setPlt( PltDat ); /* パレット設定 */
DSP_title("EUPPLAY","0.99",C_HWHITE,C_WHITE,C_MBLACK,C_HBLACK);
evt_setDspTime( 1, 432, 4, C_WHITE, C_MBLACK ); /* 時刻表示アイドリング処理設定 */
SYL_clear();
}
/*************************************************************************
* 初期化
*************************************************************************/
int init()
{
if ( (SndPtr = calloc(16384,1)) == NULL )
exit(1); /* error */
SND_init( SndPtr ); /* サウンドBIOS初期化 */
EUP_init(1); /* EUP の初期化 */
DSP_sysInit(0); /* 表示システム初期化 */
KBF_sysInit(); /* キーボードシステム初期化 */
KBF_kan_off();
FDL_sysInit(); /* ファイルダイアログ初期化 */
sdk_control(0); /* サイドワーク起動禁止 */
DSP_writePage(0); /* 書き込みページ */
DSP_setPlt( PltDat ); /* パレット設定 */
DSP_boxf(0,24,639,463,PSET,COLMIX(5,6));
set_title();
}
/*************************************************************************
* 終了
*************************************************************************/
int term()
{
FDL_sysEnd();
KBF_sysEnd();
DSP_sysEnd();
EUP_term(1);
if ( SndPtr )
{
SND_end();
free(SndPtr);
SndPtr = NULL;
}
}
/*************************************************************************
* EUP データの演奏
*************************************************************************/
int eup_play()
{
int i, x, y, ret, mute, x0, y0;
int meas, meas2, clk;
char *fdl;
char *fn;
char *dlg;
char *eupSqr;
eupSqr = NULL;
x = y = DLGPOS_CENTER_OF_SCN;
if ( (fdl = FDL_open(0)) == NULL )
return (ERR);
FDL_set_title( fdl, "EUP PLAY");
FDL_set_wildcard( fdl, "*.eup");
for(;;)
{
ret = FDL_start(fdl);
if ( ret != NORMAL )
break;
fn = FDL_get_filename(fdl);
if ( *fn == '\0' )
continue;
if ( (eupSqr = EUP_open()) == NULL )
{
FDL_close(fdl);
return (ERR);
}
if ( EUP_load( eupSqr, fn ) )
{
MNU_sure( x, y, C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
SELBTN_ATT_CENTER, " %s \n EUP LOAD ERROR!! ", fn );
} else
{
if ( EUP_setup(eupSqr) )
{
MNU_sure( x, y, C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
SELBTN_ATT_CENTER, " %s \n EUP SETUP ERROR!! ", fn );
}
SND_get_elevol_mute(&mute);
SND_elevol_mute(mute | 3);
EUP_play(eupSqr,0,0);
meas2 = -1;
while ( EUP_getPlayFlag(eupSqr) )
{
EUP_getPlayMeasClock(eupSqr,&meas,&clk);
if ( meas != meas2 )
{
SYL_puts(C_HGREEN,"meas %4d", meas + 1 );
meas2 = meas;
}
if( kbhit() || MOS_pget(&x0,&y0) )
break;
EVT_idl();
}
SYL_clear();
SND_elevol_mute(mute);
EUP_stop(eupSqr);
}
if ( eupSqr )
{
EUP_close(eupSqr);
eupSqr = NULL;
}
while ( MOS_pget(&x0,&y0) )
;
KBF_clear();
}
FDL_close(fdl);
return (NORMAL);
}
/*************************************************************************
* MAIN
*************************************************************************/
int main( int argc, char **argv )
{
init();
eup_play();
term();
return (0);
}